package com.aoxin.mapper.course.systemCourse;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.aoxin.model.course.SlfOrderCourse;

/**
 * 预约课程Mapper
 * 
 * @author Melody
 * @date 2018年3月27日 上午10:51:10
 */
public interface SlfOrderCourseMapper {

	/**
	 * 批量删除预约
	 * 
	 * @param orderCourseIds
	 *            预约ID集合
	 */
	void deleteByPrimaryKeys(List<Integer> orderCourseIds);

	/**
	 * 添加预约
	 * 
	 * @param record
	 *            预约
	 */
	void insertSelective(SlfOrderCourse record);

	/**
	 * 查询预约
	 * 
	 * @param orderCourseId
	 *            预约ID
	 * @return 预约详细
	 */
	SlfOrderCourse selectByPrimaryKey(Integer orderCourseId);

	/**
	 * 修改预约
	 * 
	 * @param record
	 *            预约
	 */
	void updateByPrimaryKeySelective(SlfOrderCourse record);

	/**
	 * 查询预约
	 * 
	 * @param map
	 *            条件集合
	 * @return 预约集合
	 */
	List<SlfOrderCourse> getList(Map<String, Object> map);

	/**
	 * 验证上课时间是否冲突
	 * 
	 * @param startDate
	 *            上课开始时间
	 * @param endDate
	 *            上课结束时间
	 * @param childrenId
	 *            孩子ID
	 * @return 记录数
	 */
	Integer checkTime(Date startDate, Date endDate, Integer childrenId);

	/**
	 * 
	 * @param syllabusId
	 * @return
	 */
	Integer getOrderBySyllabus(@Param("syllabusId") Integer syllabusId);

	/**
	 * 根据课表、孩子ID查询预约
	 * 
	 * @param syllabusId
	 *            课表ID
	 * @param childrenId
	 *            孩子ID
	 * @return 记录数
	 */
	Integer getCountBySyllabusAndChild(@Param("syllabusId") Integer syllabusId, @Param("childrenId") Integer childrenId);

	/**
	 * 取消预约
	 * 
	 * @param syllabusId
	 *            课表ID
	 * @param childrenId
	 *            孩子ID
	 */
	void cancelOrder(@Param("syllabusId") Integer syllabusId, @Param("childrenId") Integer childrenId);
}